As dependence on the Internet, mobile communication, and cloud computing for both personal and business applications continues to grow, so must the size of networks for implementing these functions. Specifically, today's networks may be implemented using hundreds or hundreds of thousands of network devices, such as switches and routers. Initial provisioning and subsequent daily maintenance of such large scale networks is a daunting task, as in many cases it necessitates that a network administrator manually provision and maintain configuration of each network device.
Some network administrators elect to employ scripts to manage and download configurations into network devices. While such scripts basically automate portions of the repetitive tasks, most of the critical decisions, such as which configuration each network device is to receive, must still be made by the administrator. As a result, the process remains labor intensive and error prone.